package cn.dzh.facade;

import cn.dzh.model.bean.CommodityDraft;
import cn.dzh.model.dto.GoodsOperateDTO;
import cn.dzh.model.dto.HttpResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;

public interface CommodityOperation {

    /**
     * 将商品标记为下线。
     * @param goodsOperateDTO 商品的数据传输对象。
     * @return HttpResult，表示成功或错误。
     */
    HttpResult goodsOffline(@Validated GoodsOperateDTO goodsOperateDTO);

    /**
     * 将商品标记为上线。
     * @param goodsOperateDTO 商品的数据传输对象。
     * @return HttpResult，表示成功或错误。
     */
    HttpResult goodsOnline(@Validated GoodsOperateDTO goodsOperateDTO);

    /**
     * 提交商品进行审核。
     * @param goodsOperateDTO 商品的数据传输对象。
     * @return HttpResult，表示成功或错误。
     */
    HttpResult pushAudit(@Validated GoodsOperateDTO goodsOperateDTO);

    /**
     * 在审核后批准商品。
     * @param goodsOperateDTO 商品的数据传输对象。
     * @return HttpResult，表示成功或错误。
     */
    HttpResult approv(@Validated GoodsOperateDTO goodsOperateDTO);

    /**
     * 在审核后驳回商品。
     * @param goodsOperateDTO 商品的数据传输对象。
     * @return HttpResult，表示成功或错误。
     */
    HttpResult reject(@Validated GoodsOperateDTO goodsOperateDTO);

    /**
     * 将商品添加到基础数据库。。
     * @return HttpResult，表示成功或错误。
     */
    HttpResult addToBase(@RequestBody CommodityDraft commodityDraft);
}
